//指针的形象比喻：国家总土地面积就是内存，生活中我们通过地址来找到我们居住的房间  这就是指针的思路   每个人居住的房间就是一个一个的单元，每个房间都有一个单独的编号（106）

//内存就是国家土地总面积，内存被划分为一个一个小的单元，划分的单元格和电脑的位数有关，如32位，内存被划分为2^32个，每个单元格的排列序号就是地址   一个内存空间就是一个字节

//如何产生地址 32位：32根地址线/数据线 ，电信号转化为高电平和低电平（0和1）       64位：也就是64根地址线/数据线，这个在计算机组成原理会详细学习

//%p是将地址以16进制的形式进行输出，%p16位和%x类似，都是输出16位，但是%p输出的时候前面不足16位会用0补全


//int main()
//{
//	int a = 10;
//	int b = 65;
//	int* p = &a;//有一种变量是用来存放地址的-----指针变量    这个指针变量p的类型是：int*    因为指针的地址是以数字的方式表示出来的    这个指针变量p也会有自己的地址
//
//	printf("%p\n", b);           -----%p是以16进制的形式输出后面的变量        %x是无符号16进制                输出的数字  0x表示16进制
//	printf("以16进制形式输出a的值%p\n", a);//输出的是用 16 进制表示的数字 10
//
//	printf("以16进制方式输出a的地址%p\n", &a);//输出变量a的地址
//
//	printf("a的地址是：%d\n", &a);//将a的地址以十进制的形式进行输出
//
//	printf("p所保存的地址编号是：%p\n",&p);//指针p本身也会有地址，输出了指针p的地址
//
//	printf("p地址所保存的数字是：%p\n", *p);//以16进制输出了a保存的的数字，等价与 （"%p"，a）
//	printf("%p\n", p);//这样输出的也是变量a的地址
//
//	printf("%d\n", p);//以十进制的形式打印变量a的地址
//
//	printf("%d\n", *p);//以%d的形式打印，也就是十进制。打印的*p是保存的数字，*p和a是等价的
//
//	*p = 20;//也可通过对地址赋值来改变该地址保存的数字   对地址改变保存的数字后，其原来定义的a的值也会发生改变
//	printf("对指针p进行重新赋值的值：%d",a);
//	//printf("%p\n", p);
//	//printf("%d\n", *p);//如果p被定义为地址变量，想通过访问p所保存的地址来获取相应的数字，需要:printf("%d",*p)  这个   *   就是解引用操作符

//注意：32位电脑指针变量占4个1字节   64位占8个字节 ！！！！！！！！！！-----指针变量的大小和指针的类型没有关系，只和编译器的位数有关系
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	char ch = 's';
//	char* ch1 = &ch;//字符类型的变量指针要用的是字符类型的变量指针
//	printf("%d\n", sizeof ch1);//输出的是8，代表我是64位电脑              当然也和你的运行环境有关，以x86运行就是4 以x64就是8
// //	printf("%c\n", *ch1);
//	*ch1 = 'b';
//	printf("%c\n", *ch1);
//	return 0;
//}

//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int* p = &a;//指针变量p的大小和前面的定义类型无关，只和系统位有关，64位就是8个字节
//	printf("%d", sizeof *p);
//	return 0;
//}

//后续补充：
//指针变量是用来就收地址的，如果在自定义函数中形式参数需要接收地址，那么形式参数需要定义为指针的形式(除非传递的是数组)
//定义的指针变量也可以进行加一

// #include<stdio.h>
// int main(void)
// {
//     char arr[]="hello word";
//     char* pc=arr;
//     printf("%s\n",arr);//%s能直接输出字符数组中的所有元素
//     printf("%s\n",pc);//指针变量pc，单独一个pc时就代表着变量的地址。解引用数组时，当做的是第一个元素的地址，%c输出一个字符
// }





//补充：因为指针的大小就是4/8字节，所以指向的内存空间是有限的的，也就是指针的地址，也就是2^32   2^64个地址能够使用

